package com.lonely.purchase.utils;

import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;

import java.math.BigDecimal;

/**
 * @author : 黄志标
 * @date: 2025/7/23 11:46
 * @description: 单位转换工具类
 */
public class UnitConvertUtil {

    public static void main(String[] args) {
        System.out.println(UnitConvertUtil.convertRicePrice2KgPrice("0.02", "0.8", "0.18"));
        System.out.println(UnitConvertUtil.convertRiceSimpleUse2KgSimpleUse("0.02", "0.8", "0.18"));
    }

    /**
     * 米价格转换成公斤价格
     * 公式：米价 = 公斤价 * 门幅 * 克重 / 100000
     *
     * @param ricePrice 米价
     * @param weight    克重
     * @param width     幅宽
     * @return
     */
    public static String convertRicePrice2KgPrice(String ricePrice, String weight, String width) {
        BigDecimal ricePriceBigDecimal = NumberUtil.toBigDecimal(StrUtil.blankToDefault(ricePrice, "0"));
        BigDecimal weightBigDecimal = NumberUtil.toBigDecimal(StrUtil.blankToDefault(weight, "0"));
        BigDecimal widthBigDecimal = NumberUtil.toBigDecimal(StrUtil.blankToDefault(width, "0"));

        BigDecimal kgPriceBigDecimal = NumberUtil.mul(NumberUtil.div(NumberUtil.div(ricePriceBigDecimal, weightBigDecimal), widthBigDecimal), 100000);
        return NumberUtil.round(kgPriceBigDecimal, 2).stripTrailingZeros().toPlainString();
    }


    /**
     * 米单件用量 转换成 公斤单件用量
     * 公式：米 = 公斤 * 10W / （门幅 * 克重）
     *
     * @param riceSimpleUse 米价
     * @param weight        克重
     * @param width         幅宽
     * @return
     */
    public static String convertRiceSimpleUse2KgSimpleUse(String riceSimpleUse, String weight, String width) {
        BigDecimal riceSimpleUseBigDecimal = NumberUtil.toBigDecimal(StrUtil.blankToDefault(riceSimpleUse, "0"));
        BigDecimal weightBigDecimal = NumberUtil.toBigDecimal(StrUtil.blankToDefault(weight, "0"));
        BigDecimal widthBigDecimal = NumberUtil.toBigDecimal(StrUtil.blankToDefault(width, "0"));

        BigDecimal kgSimpleUseBigDecimal = NumberUtil.div(NumberUtil.mul(riceSimpleUseBigDecimal, weightBigDecimal, widthBigDecimal), 1000000);
        return NumberUtil.round(kgSimpleUseBigDecimal, 2).stripTrailingZeros().toPlainString();
    }


}
